package com.dropdb.demo.controller.admin;

import com.dropdb.demo.bean.vo.StatGetGoodsVO;
import com.dropdb.demo.bean.vo.StatGetOrderVO;
import com.dropdb.demo.bean.vo.StatGetUsersVO;
import com.dropdb.demo.bean.vo.BaseRespVO;
import com.dropdb.demo.service.AdminStatService;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author:cheyanjun
 * @date:2020/06/27 09:08
 */
@RestController
@RequestMapping("admin/stat")
public class AdminStatController {

    @Autowired
    AdminStatService adminStatService;

    /**
     * 获取用户
     * @return
     */
    @GetMapping("user")
    @RequiresPermissions(value = {"*", "admin:stat:user"}, logical = Logical.OR)
    public BaseRespVO getUser(){
        Map data = new HashMap();
        List columns = new ArrayList();
        columns.add("day");
        columns.add("users");
        List rows = new ArrayList();
        StatGetUsersVO users=adminStatService.getUsers();
        rows.add(users);
        data.put("columns",columns);
        data.put("rows",rows);
        return BaseRespVO.ok(data);
    }

    /**
     * 获取订单
     * @return
     */
    @GetMapping("order")
    @RequiresPermissions(value = {"*", "admin:stat:order"}, logical = Logical.OR)
    public BaseRespVO getOrder(){
        Map data = new HashMap();
        List columns = new ArrayList();
        columns.add("day");
        columns.add("orders");
        columns.add("customers");
        columns.add("amount");
        columns.add("pcr");
        List<StatGetOrderVO> rows =  adminStatService.getOrder();
        data.put("columns",columns);
        data.put("rows",rows);
        return BaseRespVO.ok(data);
    }

    /**
     * 获取商品
     * @return
     */
    @GetMapping("goods")
    @RequiresPermissions(value = {"*", "admin:stat:goods"}, logical = Logical.OR)
    public BaseRespVO getGoods(){
        Map data = new HashMap();
        List columns = new ArrayList();
        columns.add("day");
        columns.add("orders");
        columns.add("products");
        columns.add("amount");
        List<StatGetGoodsVO> rows = adminStatService.getGoods();
        data.put("columns",columns);
        data.put("rows",rows);
        return BaseRespVO.ok(data);
    }
}
